package com.antoco.controlcenter.comm.message;

import com.antoco.controlcenter.utils.BytesUtils;

public class NciMessage {
    private byte[] ByteArray = new byte[8];

    public NciMessage() {

    }

    public NciMessage(byte[] data) {
        System.arraycopy(data, 0, ByteArray, 0, 8);
    }

    public NciMessage(byte[] func, int data) {
        System.arraycopy(func, 0, ByteArray, 0, 4);
        this.SetData(data);
    }

    public byte GetCmd() {
        return ByteArray[0];
    }

    public byte GetSub() {
        return ByteArray[1];
    }

    public byte GetExt1() {
        return ByteArray[2];
    }

    public byte GetExt2() {
        return ByteArray[3];
    }

    public int GetData() {
        // 大端小端
        return BytesUtils.highBytesToInt(ByteArray,0,4);
    }

    public void SetCmd(byte data) {
        ByteArray[0] = data;
    }

    public void SetSub(byte data) {
        ByteArray[1] = data;
    }

    public void SetExt1(byte data) {
        ByteArray[2] = data;
    }

    public void SetExt2(byte data) {
        ByteArray[3] = data;
    }

    public void SetFunc(byte[] data){
        System.arraycopy(data, 0, ByteArray, 0, 4);
    }

    public void SetData(int data) {
        // 大端小端
        System.arraycopy(BytesUtils.toHighBytes(data), 0, ByteArray, 4, 4);
    }

    public byte[] GetByteArray() {
        return ByteArray;
    }

    @Override
    public String toString() {
        return String.format("cmd:%s,data:%s", (int) GetData(), GetData());
    }
}